package com.itheima.edu.info.manager.controller;

import com.itheima.edu.info.manager.domain.Teacher;
import com.itheima.edu.info.manager.service.TeacherService;

import java.util.Scanner;

public class TeacherController {
    private Scanner sc = new Scanner(System.in);
    private TeacherService TeacherService = new TeacherService();

    public void start() {
        while (true) {
            System.out.println("--------欢迎来到 <老师> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加老师  2.删除老师  3.修改老师  4.查看老师  5.退出");
            String choose = sc.next();
            switch (choose) {
                case "1":
                    addTeacher();
                    break;
                case "2":
                    deleteTeacherById();
                    break;
                case "3":
                    updateTeacher();
                    break;
                case "4":
                    findAllTeacher();
                    break;
                case "5":
                    System.out.println("byebye");
                    return;
                default:
                    System.out.println("您的输入有无，请重新输入");
                    break;
            }
        }
    }

    //添加老师的方法
    public void addTeacher() {
        String id;
        //1.接受键盘录入，调用业务逻辑的判断id是否存在的方法，接受返回给用户提示
        while (true) {
            System.out.println("请输入老师id");
            id = sc.next();
            boolean flag = TeacherService.isExists(id);
            if (flag) {
                System.out.println("您输入的id已被占用，请重新输入");
            } else {
                break;
            }
        }
        //调用setTeacher方法，录入其他信息以及封装对象
        Teacher t = setTeacher(id);
        //3.调用业务逻辑的addTeacher方法，把对象传给它
        boolean flag = TeacherService.addTeacher(t);
        if (flag) {
            //4.提示成功
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }
    }

    //删除老师的方法
    public void deleteTeacherById() {
        //调用Service的findAllTeacher方法查看数组是否有对象
        Teacher[] T = TeacherService.findAllTeacher();
        //接受返回的数组，判断数组是否为null，是就提示无内容
        if (T == null) {
            System.out.println("系统还没有老师信息，请先添加");
            return;
        }
        while (true) {
            //录入要删除老师的id
            System.out.println("请输入您要删除的老师id");
            String id = sc.next();

            //判断id是否存在
            boolean flag = TeacherService.isExists(id);
            if (flag) {
                //调用Sercive的删除方法，把id传递过去
                TeacherService.deleteTeacherById(id);
                System.out.println("删除成功");
                break;
            } else {
                System.out.println("系统没有您输入的id，请重新输入");
            }
        }
    }

    //修改老师的方法
    private void updateTeacher() {
        //调用Service的findAllTeacher方法查看数组是否有对象
        Teacher[] T = TeacherService.findAllTeacher();
        //接受返回的数组，判断数组是否为null，是就提示无内容
        if (T == null) {
            System.out.println("系统还没有老师信息，请先添加");
            return;
        }
        String id;//提升作用域
        while (true) {
            //录入老师的id
            System.out.println("请输入您要替换掉的老师的id");
            id = sc.next();
            //调用Service中isExists方法，判断id是否存在
            boolean flag = TeacherService.isExists(id);
            if (flag) {
                break;
            } else {
                System.out.println("系统没有您输入的老师id，请重新输入");
            }
        }
        Teacher newTeacher = setTeacher(id);

        //调用Service的updateTeacher方法，把id和新的老师对象传过去，并显示提示
        TeacherService.updateTeacher(id, newTeacher);
        System.out.println("修改成功");
    }

    //查看老师的方法
    private void findAllTeacher() {
        //1.用已有的TeacherService对象，调用findAllTeacher方法
        Teacher[] T = TeacherService.findAllTeacher();
        //2.接受返回的数组，判断数组是否为null，是就提示无内容
        if (T == null) {
            System.out.println("系统还没有老师信息，请先添加");
            return;
        }
        //3.遍历数组，不输出null
        System.out.println("学号\t\t姓名\t年龄\t生日");
        for (int i = 0; i < T.length; i++) {
            Teacher Temp = T[i];
            if (Temp != null) {
                System.out.println(Temp.getId() + "\t" + Temp.getName() + "\t" + Temp.getAge() + "\t" + Temp.getBirthday());
            }
        }
    }

    //录入老师姓名年龄生日，及封装对象的方法
    public Teacher setTeacher(String id) {
        System.out.println("请输入老师姓名");
        String name = sc.next();
        System.out.println("请输入老师年龄");
        String age = sc.next();
        System.out.println("请输入老师生日");
        String birthday = sc.next();

        //2.将老师信息，封装成对象。
        Teacher T = new Teacher(id, name, age, birthday);
        return T;
    }
}
